﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Sistema_Totem.Datos.SqlServer;
using Sistema_Totem.Datos.ClasesDominio;
using Sistema_Totem.Logica.Excepciones;

namespace Sistema_Totem.Logica.Clases
{
    public class Propuesta
    {
        #region Atributos

        private int idPropuesta;        
        private string codPropuesta;
        private PlantillaPropuesta formato;
        private Proyecto miProyecto;
     
        
        #endregion Atributos

        #region Constructor(es)
        
        public Propuesta()
        {
        }

        // Constructor para crear una Propuesta basada solo en la configuracion de la plantilla elegida por el usuario
        public Propuesta(PlantillaPropuesta personalizada)
        {
            this.formato = personalizada;
        }

        #endregion Constructor(es)

        #region Encapsulamiento Get/Set

        public string CodPropuesta
        {
            get { return codPropuesta; }
            set { codPropuesta = value; }
        }

        public int IdPropuesta
        {
            get { return idPropuesta; }
            set { idPropuesta = value; }
        }

        public PlantillaPropuesta Formato
        {
            get { return formato; }
            set { formato = value; }
        }

        public Proyecto MiProyecto
        {
            get { return miProyecto; }
            set { miProyecto = value; }
        }

        #endregion Encapsulamiento Get/Set

        #region Metodos

        #region Eliminar Propuesta

        public bool EliminarPropuestaProyecto()
        {
            try
            {
                SqlServerPropuesta acceso = new SqlServerPropuesta();
                bool auxiliar;
                auxiliar = acceso.EliminarPropuestaProyecto(idPropuesta);
                return auxiliar;
            }

            catch (Exception)
            {
                throw (new PropuestaExcepcion("Error Inesperado al Intentar Eliminar Propuesta del Proyecto"));
            }
        }

        #endregion Eliminar Propuesta

        #region Borrar Contenido Propuesta

        public bool BorrarContenidoPropuesta()
        { 
             try
            {
                SqlServerPropuesta acceso = new SqlServerPropuesta();
                bool auxiliar;
                auxiliar = acceso.EliminarContenidoPropuesta(idPropuesta);
                return auxiliar;
            }

            catch (Exception)
            {
                throw (new PropuestaExcepcion("Error Inesperado al Intentar Borrar el contenido de la Propuesta"));
            }
        }
        #endregion Borrar Contenido Propuesta

        #region Generar Codigo de Propuesta

        public static string AsignarCodigoPropuesta()
        {
            string codigo;
            SqlServerPropuesta acceso= new SqlServerPropuesta();
            codigo= "TotemProp"+acceso.ConsultarUltimaPropuesta().ToString();
            return codigo;
        }
        #endregion Generar Codigo de Propuesta

        #region Verificar Configuracion de Pantilla  de la Propuesta

        public bool VerificarConfiguracionPropuesta()
        {
            try
            {
                SqlServerPropuesta acceso = new SqlServerPropuesta();
                bool auxiliar;
                auxiliar = acceso.VerificarConfiguracionPropuesta(miProyecto.IdProyecto);
                return auxiliar;
            }

            catch (Exception)
            {
                throw (new PropuestaExcepcion("Error Inesperado al Verificar Propuesta"));
            }
        }

        #endregion Verificar Configuracion de Pantilla  de la Propuesta

        #region Cargar Configuracion Personalizada Plantilla Propuesta

        public void CargarConfiguracionPropuesta()
        {
            try
            {

            }

            catch (Exception)
            {
                throw (new PropuestaExcepcion("Error Inesperado al Intentar Borrar el contenido de la Propuesta"));
            }
        }
        #endregion Cargar Configuracion Personalizada Plantilla Propuesta

        #region Consultar Datos de Plantilla Propuesta

        public PlantillaPropuesta ConsultarPlantilla()
        {
            SqlServerPropuesta acceso = new SqlServerPropuesta();
            int proyecto = this.miProyecto.IdProyecto;

            this.formato.Id= acceso.ConsultarPlantillaPropuesta(proyecto).IdPlantilla;
            this.formato.Nombre = acceso.ConsultarPlantillaPropuesta(proyecto).NombrePlantilla;
            this.formato.Descripcion = acceso.ConsultarPlantillaPropuesta(proyecto).DescripcionPlantilla;

            return this.formato;
        }

        #endregion Consultar Datos de Plantilla Propuesta

        #endregion Metodos
    }
}